---
title: "Estado del COVID-19 en Costa Rica. Realizado por: Katherine Urbina, Jorge Masís y Juan Miguel Víquez"
output:
flexdashboard::flex_dashboard:
orientation: rows
social: menu
source_code: embed
vertical_layout: fill
---
```{r setup, include=FALSE}
#-------------------- Paquetes --------------------
library(flexdashboard)
library(tidyverse)
library(plotly)
library(dplyr)
library(tidyr)
library(sf)
library(leaflet)
library(leaflet.extras)
#-------------------- Colores ---------------------
color_positivos <- '#CCCC00'
color_activos <- '#FF0033'
color_recuperados <- '#66CC33'
color_fallecidos <- '#999999'
color_nuevos_positivos <- 'red'
color_hospitalizados <- '#3399CC'
color_salon <- '#0033FF'
color_uci <- '#0033CC'
#--------------------- Íconos ---------------------
icono_positivos <- 'fas fa-file-medical'
icono_activos <- 'fas fa-exclamation-triangle'
icono_recuperados <- 'fas fa-heart'
icono_fallecidos <- 'fas fa-heartbeat'
icono_nuevos_positivos <- 'fas fa-first-aid'
icono_hospitalizados <- 'fas fa-ambulance'
icono_salon <- 'fas fa-hospital'
icono_uci <- 'fas fa-procedures'
#--------------- Otros parámetros -----------------
# Separador para lectura de datos CSV
caracter_separador <- ','
```
```{r, include=FALSE}
#--------------- Archivos de datos ----------------
archivo_general_pais <- "https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_GENERAL.csv"
archivo_positivos_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_POSITIVOS.csv'
archivo_activos_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_ACTIVOS.csv'
archivo_recuperados_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_RECUP.csv'
archivo_fallecidos_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_FALLECIDOS.csv'
```
```{r, include=FALSE}
#---------------------- Datos ---------------------
# Data frame de datos generales por país
df_general_pais <- read.csv(archivo_general_pais, sep = caracter_separador)
df_general_pais$FECHA <- as.Date(df_general_pais$FECHA, "%d/%m/%Y")
# Data frame de datos generales por país en la última fecha
df_general_pais_ultima_fecha <-
df_general_pais %>%
filter(FECHA == max(FECHA, na.rm = TRUE))
# Data frame de casos positivos por cantón
df_positivos_cantones_ancho <- read.csv(archivo_positivos_cantones, sep = caracter_separador)
df_positivos_cantones <-
df_positivos_cantones_ancho %>%
pivot_longer(cols = c(-cod_provin, -provincia, -cod_canton, -canton), names_to = "fecha", values_to = "positivos")
df_positivos_cantones$fecha <- as.Date(df_positivos_cantones$fecha, "X%d.%m.%Y")
# Data frame de casos positivos por cantón en la última fecha
df_positivos_cantones_ultima_fecha <-
df_positivos_cantones %>%
filter(fecha == max(fecha, na.rm = TRUE)) %>%
select(cod_canton, positivos)
# Data frame de casos activos por cantón
df_activos_cantones_ancho <- read.csv(archivo_activos_cantones, sep = caracter_separador)
df_activos_cantones <-
df_activos_cantones_ancho %>%
pivot_longer(cols = c(-cod_provin, -provincia, -cod_canton, -canton), names_to = "fecha", values_to = "activos")
df_activos_cantones$fecha <- as.Date(df_activos_cantones$fecha, "X%d.%m.%Y")
# Data frame de casos activos por cantón en la última fecha
df_activos_cantones_ultima_fecha <-
df_activos_cantones %>%
filter(fecha == max(fecha, na.rm = TRUE)) %>%
select(cod_canton, activos)
# Data frame de casos recuperados por cantón
df_recuperados_cantones_ancho <- read.csv(archivo_recuperados_cantones, sep = caracter_separador)
df_recuperados_cantones <-
df_recuperados_cantones_ancho %>%
pivot_longer(cols = c(-cod_provin, -provincia, -cod_canton, -canton), names_to = "fecha", values_to = "recuperados")
df_recuperados_cantones$fecha <- as.Date(df_recuperados_cantones$fecha, "X%d.%m.%Y")
# Data frame de casos recuperados por cantón en la última fecha
df_recuperados_cantones_ultima_fecha <-
df_recuperados_cantones %>%
filter(fecha == max(fecha, na.rm = TRUE)) %>%
select(cod_canton, recuperados)
# Data frame de casos fallecidos por cantón
df_fallecidos_cantones_ancho <- read.csv(archivo_fallecidos_cantones, sep = caracter_separador)
df_fallecidos_cantones <-
df_fallecidos_cantones_ancho %>%
pivot_longer(cols = c(-cod_provin, -provincia, -cod_canton, -canton), names_to = "fecha", values_to = "fallecidos")
df_fallecidos_cantones$fecha <- as.Date(df_fallecidos_cantones$fecha, "X%d.%m.%Y")
# Data frame de casos recuperados por cantón en la última fecha
df_fallecidos_cantones_ultima_fecha <-
df_fallecidos_cantones %>%
filter(fecha == max(fecha, na.rm = TRUE)) %>%
select(cod_canton, fallecidos)
# Objeto sf de cantones
sf_cantones <- st_read('https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/delimitacion-territorial-administrativa/cr/ign/cr_limite_cantonal_ign_wgs84.geojson')
# Objeto sf de casos positivos en cantones en la última fecha
sf_positivos_cantones_ultima_fecha <-
left_join(sf_cantones, df_positivos_cantones_ultima_fecha, by = c('cod_canton')) %>%
arrange(desc(positivos))
# Objeto sf de casos activos en cantones en la última fecha
sf_activos_cantones_ultima_fecha <-
left_join(sf_cantones, df_activos_cantones_ultima_fecha, by = c('cod_canton')) %>%
arrange(desc(activos))
# Objeto sf de casos recuperados en cantones en la última fecha
sf_recuperados_cantones_ultima_fecha <-
left_join(sf_cantones, df_recuperados_cantones_ultima_fecha, by = c('cod_canton')) %>%
arrange(desc(recuperados))
# Objeto sf de casos fallecidos en cantones en la última fecha
sf_fallecidos_cantones_ultima_fecha <-
left_join(sf_cantones, df_fallecidos_cantones_ultima_fecha, by = c('cod_canton')) %>%
arrange(desc(fallecidos))
```
```{r, include=FALSE}
#---------------------- Datos de distritos ---------------------
archivo_general_distritos_old <- 'https://raw.githubusercontent.com/geoprocesamiento-2020i/datos/master/covid19/ms/07_02_CSV_GENERAL_DISTRITOS.csv'
archivo_general_distritos <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_17_CSV_DISTRITOS.csv'
# Carga del archivo CSV en un data frame
df_general_distritos_sucio_old <- read.csv(archivo_general_distritos_old)
df_general_distritos_sucio <- read.csv(archivo_general_distritos)
# Eliminación de filas y columnas que corresponden a encabezados, totales, etc.
df_general_distritos_ultima_fecha_old <- df_general_distritos_sucio_old[-c(1:5), -c(1, 3, 10, 11)]
df_general_distritos_ultima_fecha <- df_general_distritos_sucio[-c(1:7), -c(1, 2, 4)]
# Cambio de nombre de las columnas
df_general_distritos_ultima_fecha <-
df_general_distritos_ultima_fecha %>%
rename(provincia = X.2,
canton = X.4,
distrito = X.5,
positivos = X.6,
recuperados = X.7,
fallecidos = X.8,
activos = X.9
) %>%
mutate_all(funs(sub("^\\s*$", NA, .))) %>% # Se llenan con NA las celdas con espacios vacíos
mutate(distrito = if_else(distrito == "El Carmen", "Carmen", distrito)) %>%
mutate(distrito = if_else(distrito == "Valle de La Estrella", "Valle La Estrella", distrito)) %>%
mutate(distrito = if_else(distrito == "La Amistad", "La Amistad", distrito)) %>%
fill(c(1,2)) # Se rellenan "hacia abajo" las columnas de provincia y cantón con valor NA
# Borrado de las filas con valor de NA o de "Sin información de distrito" en la columna de distrito
df_general_distritos_ultima_fecha <- df_general_distritos_ultima_fecha[!is.na(df_general_distritos_ultima_fecha$distrito), ]
df_general_distritos_ultima_fecha <- df_general_distritos_ultima_fecha[df_general_distritos_ultima_fecha$distrito != 'Sin información de distrito', ]
# Conversión a integer de los tipos de datos de las columnas con cifras
df_general_distritos_ultima_fecha$positivos <- as.integer(df_general_distritos_ultima_fecha$positivos)
df_general_distritos_ultima_fecha$recuperados <- as.integer(df_general_distritos_ultima_fecha$recuperados)
df_general_distritos_ultima_fecha$fallecidos <- as.integer(df_general_distritos_ultima_fecha$fallecidos)
df_general_distritos_ultima_fecha$activos <- as.integer(df_general_distritos_ultima_fecha$activos)
# Objeto sf de distritos
# Capa simplificada
sf_distritos <- st_read('https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/delimitacion-territorial-administrativa/cr/ign/cr_limite_distrital_ign_wgs84.geojson')
# Capa detallada
#sf_distritos <- st_read('https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/delimitacion-territorial-administrativa/cr/ign/cr_distritos_ign_wgs84.geojson')
# Objeto sf de casos positivos en distritos en la última fecha
sf_general_distritos_ultima_fecha <-
left_join(sf_distritos, df_general_distritos_ultima_fecha, by = c('provincia', 'canton', 'distrito'))
```
Resumen
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**
Row {data-height=100}
-----------------------------------------------------------------------
### Casos positivos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$positivos, big.mark = ","), "", sep = " "),
caption = "Total de casos positivos",
icon = icono_positivos,
color = color_positivos
)
```
### Casos activos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$activos, big.mark = ","), " (",
round(100 * df_general_pais_ultima_fecha$activos / df_general_pais_ultima_fecha$positivos, 1),
"%)", sep = ""),
caption = "Total de casos activos",
icon = icono_activos,
color = color_activos
)
```
### Casos recuperados {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$RECUPERADOS, big.mark = ","), " (",
round(100 * df_general_pais_ultima_fecha$RECUPERADOS / df_general_pais_ultima_fecha$positivos, 1),
"%)", sep = ""),
caption = "Total de casos recuperados",
icon = icono_recuperados,
color = color_recuperados
)
```
### Casos fallecidos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$fallecidos, big.mark = ","), " (",
round(100 * df_general_pais_ultima_fecha$fallecidos / df_general_pais_ultima_fecha$positivos, 1),
"%)", sep = ""),
caption = "Total de casos fallecidos",
icon = icono_fallecidos,
color = color_fallecidos
)
```
Row
-----------------------------------------------------------------------
### Hospitalizados {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$hospital, big.mark = ","), "", sep = " "),
caption = "Total de hospitalizados",
icon = icono_hospitalizados,
color = color_hospitalizados
)
```
### En salón {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$salon, big.mark = ","), " (",
round(100 * df_general_pais_ultima_fecha$salon / df_general_pais_ultima_fecha$hospital, 1),
"%)", sep = ""),
caption = "Hospitalizados en salón",
icon = icono_salon,
color = color_salon
)
```
### Alerta de capacidad en salón UCI
```{r}
Capacidad_UCI <- df_general_pais_ultima_fecha$promedio_UCI
gauge(Capacidad_UCI, min = 0, max = 100, symbol = '%', gaugeSectors(
success = c(0, 35), warning = c(36, 70), danger = c(71, 100)
))
```
Row {data-width=100}
-----------------------------------------------------------------------
### Tabla de cantidades de casos en distritos
```{r}
st_drop_geometry(sf_general_distritos_ultima_fecha) %>%
select(Provincia = provincia, Canton = canton, Distritos = distrito, Positivos = positivos, Activos = activos, Recuperados = recuperados, Fallecidos = fallecidos) %>%
DT::datatable(rownames = FALSE,
options = list(searchHighlight = TRUE,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
)
)
```
Row {data-width=400} Row {data-height=5}
-----------------------------------------------------------------------
Casos positivos
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**
Row
-----------------------------------------------------------------------
### Casos positivos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$positivos, big.mark = ","), "", sep = " "),
caption = "Total de casos positivos",
icon = icono_positivos,
color = color_positivos
)
```
Row {data-width=400}
-----------------------------------------------------------------------
### Mapa de casos positivos en distritos
```{r}
p_bins <- c(0,300,800,1500,5000,15000,Inf)
paleta_azul <- colorBin(palette = "YlOrBr",
domain = sf_general_distritos_ultima_fecha$positivos,
bins = p_bins
)
leaflet_distritos <- leaflet(sf_general_distritos_ultima_fecha) %>%
fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addPolygons(fillColor = ~paleta_azul(positivos), stroke=T, fillOpacity = 1,
color="black", weight=0.2, opacity= 0.5,
group = "Distritos",
popup = paste("Cantón: ", sf_general_distritos_ultima_fecha$canton, "",
"Distrito: ", sf_general_distritos_ultima_fecha$distrito, "",
"Positivos: ", sf_general_distritos_ultima_fecha$positivos
)
) %>%
addLegend("bottomright", pal = paleta_azul, values = ~positivos,
title = "Casos positivos",
opacity = 1
) %>%
addLayersControl(
baseGroups = c("OpenStreetMap"),
overlayGroups = c("Distrito"),
options = layersControlOptions(collapsed = TRUE)
) %>%
addMiniMap(
toggleDisplay = TRUE,
position = "bottomleft",
tiles = providers$OpenStreetMap.Mapnik
) %>%
addScaleBar()
# Despliegue del mapa
leaflet_distritos
```
### Gráfico de distritos con mayor cantidad de casos positivos
```{r}
df_distritos_positivos <- (df_general_distritos_ultima_fecha) %>%
mutate(distritos= factor (positivos, levels = sort(unique(df_general_distritos_ultima_fecha$positivos)))) %>%
top_n(n = 10, wt = positivos)
df_distritos_positivos_ord <- df_general_distritos_ultima_fecha[with(df_general_distritos_ultima_fecha, order(-df_general_distritos_ultima_fecha$positivos)), ]
df_distritos_positivos_otros <- df_distritos_positivos_ord %>%
slice(11:487) %>%
select(distrito, positivos,recuperados,fallecidos,activos)%>%
summarize(provincia="",canton="",distrito="otros",positivos = sum(positivos), recuperados = sum(recuperados), fallecidos = sum(fallecidos), activos = sum(activos))
df_distritos_positivos_top<- df_distritos_positivos_ord %>%
slice(1:10)
df_distritos_pie_positivos <- rbind(df_distritos_positivos_top,df_distritos_positivos_otros)
```
```{r}
positivos_grafico <- c ("rgb(84,48,5)", "rgb(140,81,10)", "rgb(191,129,45)", "rgb(223,194,125)", "rgb(246,232,195)", "rgb(245,245,245)", "rgb(199,234,229)", "rgb(128,205,193)", "rgb(53,151,143)", "rgb(1,102,94)", "rgb(0,60,48)")
fig <- plot_ly(df_distritos_pie_positivos,labels = ~ distrito,
values = ~ positivos,
type = "pie",
text = ~positivos,
textposition = 'inside',
marker = list(colors = color_positivos, line = list(color = "#ffffcc"))) %>%
layout(yaxis = list(title = "Cantidad de casos positivos"),
xaxis = list(title = ""),
margin = list(l = 10,
r = 10,
b = 10,
t = 10,
pad = 2
)
)
fig
```
Casos activos
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**
Row
-----------------------------------------------------------------------
### Casos activos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$activos, big.mark = ","), "", sep = " "),
caption = "Total de casos activos",
icon = icono_activos,
color = color_activos
)
```
Row {data-width=400}
-----------------------------------------------------------------------
### Mapa de casos activos en distritos
```{r}
a_bins <- c(0,100,300,500,1500,3000,5000,Inf)
paleta_activos <- colorBin(palette = "Reds",
domain = sf_general_distritos_ultima_fecha$activos,
bins = a_bins
)
leaflet_distritos <- leaflet(sf_general_distritos_ultima_fecha) %>%
fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addPolygons(fillColor = ~paleta_activos(activos), stroke=T, fillOpacity = 1,
color="black", weight=0.2, opacity= 0.5,
group = "Distritos",
popup = paste("Cantón: ", sf_general_distritos_ultima_fecha$canton, "",
"Distrito: ", sf_general_distritos_ultima_fecha$distrito, "",
"Activos: ", sf_general_distritos_ultima_fecha$activos
)
) %>%
addLegend("bottomright", pal = paleta_activos, values = ~activos,
title = "Casos activos",
opacity = 1
) %>%
addLayersControl(
baseGroups = c("OpenStreetMap"),
overlayGroups = c("Distritos"),
options = layersControlOptions(collapsed = TRUE)
) %>%
addMiniMap(
toggleDisplay = TRUE,
position = "bottomleft",
tiles = providers$OpenStreetMap.Mapnik
)%>%
addScaleBar()
# Despliegue del mapa
leaflet_distritos
```
```{r}
df_distritos_activos <- (df_general_distritos_ultima_fecha) %>%
mutate(distritos= factor (activos, levels = sort(unique(df_general_distritos_ultima_fecha$activos)))) %>%
top_n(n = 10, wt = activos)
df_distritos_activos_ord <- df_general_distritos_ultima_fecha[with(df_general_distritos_ultima_fecha, order(-df_general_distritos_ultima_fecha$activos)), ]
df_distritos_activos_otros <- df_distritos_activos_ord %>%
slice(11:487) %>%
select(distrito, positivos,recuperados,fallecidos,activos)%>%
summarize(provincia="",canton="",distrito="otros",positivos = sum(positivos), recuperados = sum(recuperados), fallecidos = sum(fallecidos), activos = sum(activos))
df_distritos_activos_top<- df_distritos_activos_ord %>%
slice(1:10)
df_distritos_pie_activos <- rbind(df_distritos_activos_top,df_distritos_activos_otros)
```
### Gráfico de distritos con mayor cantidad de casos activos
```{r}
activos_grafico <- c ("rgb(84,48,5)", "rgb(140,81,10)", "rgb(191,129,45)", "rgb(223,194,125)", "rgb(246,232,195)", "rgb(245,245,245)", "rgb(199,234,229)", "rgb(128,205,193)", "rgb(53,151,143)", "rgb(1,102,94)", "rgb(0,60,48)")
figactivos <- plot_ly(df_distritos_pie_activos,labels = ~ distrito,
values = ~ activos,
type = "pie",
text = ~activos,
textposition = 'inside',
marker = list(colors = color_activos, line = list(color = "#ffffcc"))) %>%
layout(yaxis = list(title = "Cantidad de casos activos"),
xaxis = list(title = ""),
margin = list(l = 10,
r = 10,
b = 10,
t = 10,
pad = 2
)
)
figactivos
```
Casos recuperados
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**.
Row
-----------------------------------------------------------------------
### Casos recuperados {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$RECUPERADOS, big.mark = ","), "", sep = " "),
caption = "Total de casos recuperados",
icon = icono_recuperados,
color = color_recuperados
)
```
Row {data-width=400}
-----------------------------------------------------------------------
### Mapa de casos recuperados en distritos
```{r}
r_bins <- c(0,100,500,1000,3000,4000,Inf)
paleta_recuperados <- colorBin(palette = "Greens",
domain = sf_general_distritos_ultima_fecha$recuperados,
bins = r_bins
)
leaflet_distritos <- leaflet(sf_general_distritos_ultima_fecha) %>%
fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addPolygons(fillColor = ~paleta_recuperados(recuperados), stroke=T, fillOpacity = 1,
color="black", weight=0.2, opacity= 0.5,
group = "Distritos",
popup = paste("Cantón: ", sf_general_distritos_ultima_fecha$canton, "",
"Distrito: ", sf_general_distritos_ultima_fecha$distrito, "",
"Recuperados: ", sf_general_distritos_ultima_fecha$recuperados
)
) %>%
addLegend("bottomright", pal = paleta_recuperados, values = ~recuperados,
title = "Casos recuperados",
opacity = 1
) %>%
addLayersControl(
baseGroups = c("OpenStreetMap"),
overlayGroups = c("Distrito"),
options = layersControlOptions(collapsed = TRUE)
) %>%
addMiniMap(
toggleDisplay = TRUE,
position = "bottomleft",
tiles = providers$OpenStreetMap.Mapnik
)%>%
addScaleBar()
# Despliegue del mapa
leaflet_distritos
```
```{r}
df_distritos_recuperados <- (df_general_distritos_ultima_fecha) %>%
mutate(distritos= factor (recuperados, levels = sort(unique(df_general_distritos_ultima_fecha$recuperados)))) %>%
top_n(n = 10, wt = recuperados)
df_distritos_recuperados_ord <- df_general_distritos_ultima_fecha[with(df_general_distritos_ultima_fecha, order(-df_general_distritos_ultima_fecha$recuperados)), ]
df_distritos_recuperados_otros <- df_distritos_recuperados_ord %>%
slice(11:487) %>%
select(distrito, positivos,recuperados,fallecidos,activos)%>%
summarize(provincia="",canton="",distrito="otros",positivos = sum(positivos), recuperados = sum(recuperados), fallecidos = sum(fallecidos), activos = sum(activos))
df_distritos_recuperados_top<- df_distritos_recuperados_ord %>%
slice(1:10)
df_distritos_pie_recuperados <- rbind(df_distritos_recuperados_top,df_distritos_recuperados_otros)
```
### Gráfico de distritos con mayor cantidad de casos recuperados
```{r}
activos_grafico <- c ("rgb(84,48,5)", "rgb(140,81,10)", "rgb(191,129,45)", "rgb(223,194,125)", "rgb(246,232,195)", "rgb(245,245,245)", "rgb(199,234,229)", "rgb(128,205,193)", "rgb(53,151,143)", "rgb(1,102,94)", "rgb(0,60,48)")
figrecuperados <- plot_ly(df_distritos_pie_recuperados,labels = ~ distrito,
values = ~ recuperados,
type = "pie",
text = ~recuperados,
textposition = 'inside',
marker = list(colors = color_recuperados, line = list(color = "#ffffcc"))) %>%
layout(yaxis = list(title = "Cantidad de casos recuperados"),
xaxis = list(title = ""),
margin = list(l = 10,
r = 10,
b = 10,
t = 10,
pad = 2
)
)
figrecuperados
```
Casos fallecidos
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**.
Row
-----------------------------------------------------------------------
### Casos Fallecidos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$fallecidos, big.mark = ","), "", sep = " "),
caption = "Total de casos fallecidos",
icon = icono_fallecidos,
color = color_fallecidos
)
```
Row {data-width=400}
-----------------------------------------------------------------------
### Mapa de casos fallecidos en distritos
```{r}
f_bins <- c(0,5,10,25,50,150,Inf)
paleta_fallecidos <- colorBin(palette = "Greys",
domain = sf_general_distritos_ultima_fecha$fallecidos,
bins = f_bins
)
leaflet_distritos <- leaflet(sf_general_distritos_ultima_fecha) %>%
fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addPolygons(fillColor = ~paleta_fallecidos(fallecidos), stroke=T, fillOpacity = 1,
color="black", weight=0.2, opacity= 0.5,
group = "Distrito",
popup = paste("Cantón: ", sf_general_distritos_ultima_fecha$canton, "",
"Distrito: ", sf_general_distritos_ultima_fecha$distrito, "",
"Fallecidos: ", sf_general_distritos_ultima_fecha$fallecidos)
) %>%
addLegend("bottomright", pal = paleta_fallecidos, values = ~fallecidos,
title = "Casos fallecidos",
opacity = 1
) %>%
addLayersControl(
baseGroups = c("OpenStreetMap"),
overlayGroups = c("Distrito"),
options = layersControlOptions(collapsed = TRUE)
) %>%
addMiniMap(
toggleDisplay = TRUE,
position = "bottomleft",
tiles = providers$OpenStreetMap.Mapnik
)%>%
addScaleBar()
# Despliegue del mapa
leaflet_distritos
```
```{r}
df_distritos_fallecidos <- (df_general_distritos_ultima_fecha) %>%
mutate(distritos= factor (fallecidos, levels = sort(unique(df_general_distritos_ultima_fecha$fallecidos)))) %>%
top_n(n = 10, wt = fallecidos)
df_distritos_fallecidos_ord <- df_general_distritos_ultima_fecha[with(df_general_distritos_ultima_fecha, order(-df_general_distritos_ultima_fecha$fallecidos)), ]
df_distritos_fallecidos_otros <- df_distritos_fallecidos_ord %>%
slice(11:487) %>%
select(distrito, positivos,recuperados,fallecidos,activos)%>%
summarize(provincia="",canton="",distrito="otros",positivos = sum(positivos), recuperados = sum(recuperados), fallecidos = sum(fallecidos), activos = sum(activos))
df_distritos_fallecidos_top<- df_distritos_fallecidos_ord %>%
slice(1:10)
df_distritos_pie_fallecidos <- rbind(df_distritos_fallecidos_top,df_distritos_fallecidos_otros)
```
### Gráfico de distritos con mayor cantidad de casos fallecidos
```{r}
activos_grafico <- c ("rgb(84,48,5)", "rgb(140,81,10)", "rgb(191,129,45)", "rgb(223,194,125)", "rgb(246,232,195)", "rgb(245,245,245)", "rgb(199,234,229)", "rgb(128,205,193)", "rgb(53,151,143)", "rgb(1,102,94)", "rgb(0,60,48)")
figfallecidos <- plot_ly(df_distritos_pie_fallecidos,labels = ~ distrito,
values = ~ fallecidos,
type = "pie",
text = ~fallecidos,
textposition = 'inside',
marker = list(colors = color_fallecidos, line = list(color = "#ffffcc"))) %>%
layout(yaxis = list(title = "Cantidad de casos fallecidos"),
xaxis = list(title = ""),
margin = list(l = 10,
r = 10,
b = 10,
t = 10,
pad = 2
)
)
figfallecidos
```
Mapa de calor
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**.
Row {data-width=400}
-----------------------------------------------------------------------
### Casos en distritos
```{r}
# Cálculo de centroides de los distritos
sf_distritos_centroides = st_centroid(sf_general_distritos_ultima_fecha, of_largest_polygon = FALSE)
# Separación de los datos de longitud y latitud en columnas distintas
separated_coord <- sf_distritos_centroides %>%
mutate(long = unlist(map(sf_distritos_centroides$geometry,1)),
lat = unlist(map(sf_distritos_centroides$geometry,2))
)
# Mapa de calor
leaflet() %>%
fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
addProviderTiles(providers$CartoDB.DarkMatter, group = "CartoDB DarkMatter") %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addPolygons(
data = sf_general_distritos_ultima_fecha,
stroke=T, fillOpacity = 0,
color="black", weight=0.2, opacity= 1.0,
group = "Distritos",
popup = paste(
"Provincia: ", sf_general_distritos_ultima_fecha$provincia, "
",
"Cantón: ", sf_general_distritos_ultima_fecha$canton, "
",
"Distrito: ", sf_general_distritos_ultima_fecha$distrito, "
",
"Casos positivos: ", sf_general_distritos_ultima_fecha$positivos, "
",
"Casos activos: ", sf_general_distritos_ultima_fecha$activos, "
",
"Casos recuperados: ", sf_general_distritos_ultima_fecha$recuperados, "
",
"Casos fallecidos: ", sf_general_distritos_ultima_fecha$fallecidos
)
) %>%
addHeatmap(
data = separated_coord,
lng = ~long, lat = ~lat, intensity = ~positivos,
blur = 10, max= max(separated_coord$positivos), radius = 15,
group = "Casos positivos"
) %>%
addHeatmap(
data = separated_coord,
lng = ~long, lat = ~lat, intensity = ~activos,
blur = 10, max= max(separated_coord$activos), radius = 15,
group = "Casos activos"
) %>%
addHeatmap(
data = separated_coord,
lng = ~long, lat = ~lat, intensity = ~recuperados,
blur = 10, max= max(separated_coord$recuperados), radius = 15,
group = "Casos recuperados"
) %>%
addHeatmap(
data = separated_coord,
lng = ~long, lat = ~lat, intensity = ~fallecidos,
blur = 10, max= max(separated_coord$fallecidos), radius = 15,
group = "Casos fallecidos"
) %>%
addLayersControl(
baseGroups = c("Stamen Toner Lite", "CartoDB DarkMatter", "OpenStreetMap"),
overlayGroups = c("Distritos", "Casos positivos", "Casos activos", "Casos recuperados", "Casos fallecidos"),
options = layersControlOptions(collapsed = TRUE)
) %>%
addScaleBar() %>%
hideGroup("Distritos") %>%
hideGroup("Casos activos") %>%
hideGroup("Casos recuperados") %>%
hideGroup("Casos fallecidos")
```